package com.tuhui.listener;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.TimerTask;

/**
 * 创建一个定时处理上传失败的文件
 */
public class FileTimerTask extends TimerTask {
    @Override
    public void run() {
        System.out.println("开始处理失败的文件");
        File newfile = new File("error");
        if(!newfile.exists()){
            newfile.mkdirs();
        }
        ArrayList<File> files = null;
        try {
             files = ListenerFile.getFiles("error");
        } catch (Exception e) {
            System.out.println("读取文件失败："+e.getMessage());
            e.printStackTrace();
        }
        //进行文件上传
        if(files!=null && files.size()>0){
            files.forEach(file->{
                //ftp文件保持不变
                FileInputStream in= null;
                try {
                    in = new FileInputStream(file);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                    System.out.println("读取文件流失败："+e.getMessage());
                }
                String filePath[] = file.getParent().split("\\\\");
                String uploadFtpPath =  FtpUtil.ftpPath;
                for(int i=1;i<filePath.length;i++){
                    uploadFtpPath+="/"+filePath[i];
                }
                String fileName = file.getName();
                System.out.println("uploadFtpPath:"+uploadFtpPath);
                Boolean upladStatus =  FtpUtil.uploadFile(FtpUtil.ftpHost, FtpUtil.ftpUserName, FtpUtil.ftpPassword, FtpUtil.ftpPort, uploadFtpPath, fileName,in );
                //上传失败记录
                if(!upladStatus){
                    FtpUtil.writFile(file.getPath());
                }else {
                    //成功后删除文件
                    FtpUtil.deleteFile(file);
                }
            });
        }
        System.out.println("处理失败的文件结束");
    }
}
